package de.akabahn.ebd.stw.zdxfc.prs.commande.elemente;

import static de.akabahn.ebd.stw.zdxfc.prs.commande.ZDXFCCommandeConstants.KONTROLLLAMPE_TEXT_COLOR;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;

import org.apache.log4j.Logger;

/**
 * Implementierung einer <code>Kontroll-Lampe</code> auf dem Bedienpult
 *
 * @author Peter Eimann
 * @since 1.0
 * @version 1.2
 */
public class KontrollLampe extends Panel {
	private static final long serialVersionUID = 6717564306630107585L;
	private static final Logger LOG = Logger.getLogger(KontrollLampe.class);
	
	private String id;
	private boolean leuchtet;
	private String text;
	private Color colorOff;
	private Color colorOn;
	private Color bgColor;
	
	
	/**
	 * Initialisierung der Kontroll-Lampe mit den uebergebenen Eigenschaften
	 * 
	 * @param id Eindeutige ID des Elements, wird fuer die Referenz auf das
	 *           Element benoetigt (die ID ist der Schluessel in den Maps, in
	 *           denen das Element gespeichert ist.
	 * @param text Der Text, der zu der Kontroll-Lampe dargestellt werden soll
	 * @param colorOff Farbe der ausgeschalteten Lampe
	 * @param colorOn Farbe der eingeschalteten Lampe
	 * @param bgColor Hintergrundfarbe
	 */
	public KontrollLampe(String id, String text, Color colorOff, Color colorOn, Color bgColor) {
		this.id = id;
		this.text = text;
		this.colorOff = colorOff;
		this.colorOn = colorOn;
		this.bgColor = bgColor;
	}
	
	/**
	 * Zeichnet die Kontroll-Lampe auf dem Bedienpult mit der Farbe des Ausleuchtungszustands und dem zugehoerigen
	 * Text.
	 */
	public void paint(Graphics g) {
		setBackground(bgColor);
		g.setColor(KONTROLLLAMPE_TEXT_COLOR);
		g.drawString(text, 25, 20);
		
		if (!leuchtet) {
			g.setColor(colorOff);
		} else {
			g.setColor(colorOn);
		}
		
		g.fillOval(25, 27, 15, 15);
	}

	/**
	 * Einschalten der Kontroll-Lampe
	 * 
	 * @see #paint(Graphics)
	 */
	public void kontrollLampeAn() {
		LOG.debug("Kontrolllampe " + id + ": An");
		leuchtet = true;
		repaint();
	}
	
	/**
	 * Ausschalten der Kontroll-Lampe
	 * 
	 * @see #paint(Graphics)
	 */
	public void kontrollLampeAus() {
		LOG.debug("Kontrolllampe " + id + ": An");
		leuchtet = false;
		repaint();
	}
	
	/**
	 * Gibt die ID des Elements an
	 * 
	 * @return die ID
	 */
	public String getId() {
		return id;
	}
}
